package com.ainiyar.springweb.service;

import com.ainiyar.springweb.common.result.ResultResponse;
import com.ainiyar.springweb.pojo.admin.vo.RolePermissionVo;
import com.ainiyar.springweb.pojo.admin.vo.SelectVo;
import com.ainiyar.springweb.pojo.entity.Menu;
import com.mybatisflex.core.service.IService;

import java.util.List;

/**************************************
 * File Name : MenuService
 * Created with : IntelliJ IDEA.
 * Author : 艾尼亚尔·毛拉吾提
 * QQ : 524155792  WeChat : ainiyar0124
 * Created Time : 2024/2/5  00:51
 * Desc :
 ***************************************/
public interface MenuService extends IService<Menu> {
    /**
     * 为超级管理员获取菜单权限
     *
     * @return List<Menu>
     */
    List<Menu> findPermissionListForSuperSuperAdmin();

    /**
     * 根据登录人id获取菜单权限
     *
     * @param admin_id 当前登录人id
     * @return List<Menu>
     */
    List<Menu> findPermissionListByAdminId(Long admin_id);

    /**
     * 菜单权限列表
     */
    ResultResponse<List<Menu>> lists();

    /**
     * 新增，修改菜单权限
     *
     * @param menu 菜单权限数据
     * @return true：新增，修改成功  false：新增，修改失败
     */
    boolean saveAddEditMenu(Menu menu);

    /**
     * 删除菜单权限
     *
     * @param id 菜单权限id
     * @return true：删除成功  false：删除失败
     */
    boolean deleteMenu(Long id);

    /**
     * 检查当前菜单是否存在子菜单
     *
     * @param id 菜单id
     * @return boolean
     */
    boolean hasChildren(Long id);

    /**
     * 是否绑定角色
     *
     * @param per_id 菜单权限id
     * @return boolean
     */
    boolean isBindRole(Long per_id);

    /**
     * 为下拉框
     *
     * @return List<SelectVo>
     */
    List<SelectVo> getForSelect();

    /**
     * 为角色列表
     *
     * @param ids 菜单权限 id
     * @return PermissionEntity
     */
    List<Menu> getMenuForRoleByIds(Object ids);

    /**
     * 为角色配置权限
     */
    List<RolePermissionVo> getMenuForPermission();
}
